int lenDiff = num1.length() - num2.length();
    	for (int i = num1.length() - 1; i > -1 ; --i) {
    		StringBuilder tmpRes = new StringBuilder();
    		for (int j = 0; j < num1.length() + 1; j++) {
    			tmpRes.append('0');
			}
    		int carry = 0;
    		int n1 = num(num1.charAt(i));
			for (int j = num2.length() - 1; j > -1; --j) {
				int n2 = num(num2.charAt(j));
				int d = n1 + n2 + carry;
				carry = d / 10;
				sum.append(d % 10);
			}
    	}
    	
    	
    	CharSequence add(CharSequence num1, CharSequence num2) {
        	if (num1.length() < num2.length()) {
        		CharSequence t = num1;
        		num1 = num2;
        		num2 = t;
        	}
        	
    		StringBuilder sum = new StringBuilder(num1.length() + 1);
    		for (int i = 0; i < num1.length() + 1; i++) {
    			sum.append('0');
    		}
    		
    		int lenDiff = num1.length() - num2.length();
    		int carry = 0;
    		for (int i = num1.length() - 1; i > -1 ; --i) {
    			int n1 = num(num1.charAt(i));
    			int j = i - lenDiff;
    			int n2 = 0;
    			if (j > - 1) {
    				n2 = num(num2.charAt(j));
    			}
    			int d = n1 + n2 + carry;
    			sum.setCharAt(i + 1, chr(d % 10));
    			carry = d / 10;
    		}
    		
    		if (carry != 0) {
    			sum.setCharAt(0, chr(carry));
    		}
    		return sum;
        }    	